package com.ywx.intelligentaicodegeneration.core.saver;

import com.ywx.intelligentaicodegeneration.ai.model.HtmlCodeResult;
import com.ywx.intelligentaicodegeneration.ai.model.MultiFileCodeResult;
import com.ywx.intelligentaicodegeneration.exception.BusinessException;
import com.ywx.intelligentaicodegeneration.exception.ErrorCode;
import com.ywx.intelligentaicodegeneration.mode.enums.CodeGenTypeEnum;

import java.io.File;

/**
 * 代码保存执行器
 * 根据代码生成类型执行相应保存逻辑
 *
 * @author ywx
 */
public class CodeFileSaverExecutor {

    private static final HtmlCodeFileSaverTemplate htmlCodeFileSaverTemplate = new HtmlCodeFileSaverTemplate();
    private static final MultiFileCodeFileSaverTemplate multiFileCodeFileSaverTemplate = new MultiFileCodeFileSaverTemplate();


    /**
     * 执行保存逻辑
     * @param result 代码生成结果
     * @param codeGenTypeEnum 代码生成类型枚举
     * @param appId 应用ID
     * @return 保存后的文件
     */
    public static File executeSaver(Object result, CodeGenTypeEnum codeGenTypeEnum,Long appId) {
        return switch (codeGenTypeEnum) {
            case HTML -> htmlCodeFileSaverTemplate.saveCode((HtmlCodeResult) result,appId);
            case MULTI_FILE -> multiFileCodeFileSaverTemplate.saveCode((MultiFileCodeResult) result,appId);
            default -> throw new BusinessException(ErrorCode.SYSTEM_ERROR, "不支持的代码生成类型");
        };
    }

}
